עכשיו אני רוצה לשלוף בדף הראשי שבאתר 3 שורות מכל קטגוריה, ואני רוצה שזה יהיה בצורה יעילה.
כי אפשר להשתמש בUNION, אבל מה קורה שיש לי 10 קטגוריות(כמו ב WALLA).. אז זה כבר UNIOU לא נראה יעיל במיוחד.
איך לשלוף?
נ.ב. אני מחפש על זה המון ועדיין לא מצאתי משהו.
13 תשובות
FROM (SELECT t.*,
CASE
WHEN @category != t.cat THEN @rownum := 1
ELSE @rownum := @rownum + 1
END AS rank,
@category := t.cat AS var_category
FROM TABLENAME t
JOIN (SELECT @rownum := NULL, @category := '') r
ORDER BY cat) x
WHERE x.rank <= 3
זה מה שצריך לשנות בשאילת:
SELECT x.*
FROM (SELECT t.*,
CASE
WHEN @category != t.cat THEN @rownum := 1
ELSE @rownum := @rownum + 1
END AS rank,
@category := t.cat AS var_category
FROM TABLENAME t
JOIN (SELECT @rownum := NULL, @category := '') r
ORDER BY cat ASC, date DESC) x
WHERE x.rank <= 3="">=>
הקוד לא מובן.
תוכל קצת להסביר ?
איזה חלק של הקוד לא מובן ?
הסבר: http://www.fxp.co.il/showthread.php?t=10302987&page=2
עניתי לך שם.
וגם פה אני יכתוב קטע קטן: אין אפשרות אחרת לשלוף?
חייבים רק ככה?
אני מחפש דרך אחרת מומלצת-לפחות עד שאהיה מומחה יותר
ניסית לעשות שליפה בלולאה ?
זה בדיוק הבעייה, אני משתמש בלולאה. אבל איך לעשות שהיא תשלוף מכל קטגוריה את ה3 שורות האחרונות שלה
לעבור על כל קטגוריה ולבצע שאילת של שליפת שלוש הרשומות האחרונות עבור אותה קטגוריה.
איזה שאילתה אתה לא יכול לכתוב? את זאת ששולפת את כל הקטגוריות או את זאת ששולפת 3 שורות עבור קטגוריה מספר 2 ?
שלום
אני לא ככ טוב עדיין כדי להבין את זה לגמרי.
תכלס לא ככ הבנתי איך לשבץ פה את השאילתה שלי.
מישהו יכול בבקשה לעזור לי עם כתיבת השאילתה שלי.
אם לטבלה שלי קוראים ART ויש לי קטגוריות בשם PAINT ו- DROW ואני רוצה לשלוף מכל אחד את 5 הפוסטים האחרונים.
אז מה הקוד שאני צריך??
תודה רבה
אVי
בידיוק הייתה לי אותה בעיה שרציתי לשלוף משהו ...
מצאתי פתרון יעיל ומהיר
(
SELECT ROW_NUMBER() OVER (PARTITION BY art.id ORDER BY art.id) AS 'RowNo', art.paint,art.draw
)
SELECT * FROM tmp WHERE RowNo <= 5